【UCIe】UCIe NOP 介绍

您所在的位置:网站首页 pcie ari技术 【UCIe】UCIe NOP 介绍

【UCIe】UCIe NOP 介绍

2023-08-14 05:30| 来源: 网络整理| 查看: 265

🔥点击查看精选 UCIe 系列文章🔥 🔥点击进入【芯片设计验证】社区,查看更多精彩内容🔥

📢 声明:

🥭 作者主页:【MangoPapa的CSDN主页】。⚠️ 本文首发于CSDN,转载或引用请注明出处【https://mangopapa.blog.csdn.net/article/details/128343256】。⚠️ 本文目的为 个人学习记录 及 知识分享。因个人能力受限,存在协议解读不正确的可能。若您参考本文进行产品设计或进行其他事项并造成了不良后果,本人不承担相关法律责任。⚠️ 若本文所采用图片或相关引用侵犯了您的合法权益,请联系我进行删除。😄 欢迎大家指出文章错误,欢迎同行与我交流 ~📧 邮箱:[email protected]

文章目录 1. 前言2. NOP Flit3. NOP DLLP 及 NOP2 DLLP4. FDI / RDI 上的 NOP 请求5. Sideband 中的 NOP6. 参考

1. 前言

  NOP,全称 No Operation,表示无需任何操作,常用于数据占位,或无效状态下的信号默认值。

  PCIe 6.0 中的 NOP 操作有 NOP TLP、NOP / NOP2 DLLP DLLP 及 NOP Flit。在 UCIe 中,这些 NOP 操作仍然适用。相比之下,UCIe 更关注 NOP DLLP 及 NOP Flit,没有提及 NOP TLP,NOP TLP 完全按照协议层规则来。

  除了 NOP Flit、NOP DLLP 这种 Mainband 上的 NOP,在 FDI/RDI 接口及 Sideband 中也有 NOP 相关请求或消息。

2. NOP Flit

  PCIe 中,NOP Flit 是指 TLP Bytes 全部为 0 但 DLP Bytes 仍正常填充 DLLP 的 Flit。UCIe 中,NOP Flit 是指 Flit Chunk 数据全部为 0 的 Flit,跟 DLLP Bytes 的数据是否全 0 没有关系。

  在 UCIe 发送端,有两个地方可以插 NOP Flit:

协议层插入 NOP Flit。在发送端,若某 Stack 的协议层没有 TLP 要发,协议层必须插入 NOP Flit,确保 Adapter 有机会插入 DLLP。Adapter 插入 NOP Flit。若开启了 2 个 Stack,另一个 Stack 没有 Flit 发送时,Adapter 需要在 Protocol Flit 后插入 NOP Flit,来避免物理链路和 RDI 速率不匹配导致的 Burst (??? 没看懂)。

  在接收端,Adapter 接收到正确的 NOP Flit 后直接丢弃,禁止将接收到的 NOP Flit 上传到协议层。

  协议层在组装 NOP Flit 时,必须在 Flit Header 内(格式如表 1)填入相应的 Protocol Identifier 来标志当前为 NOP Flit,Flit Chunk 部分全部填 0。协议层经 FDI 接口给 Adapter 发送 NOP Flit 时,通过 lp_nop_flit 信号来指示当前 Flit 为 NOP Flit,Adapter 可以依据此信号来 Bypass Tx Retry Buffer。注意:lp_nop_flit 仅用于 256B Flit Mode,只在当前 Flit 多个 Chunk 的最后一个 Chunk 期间置起。

▼表 1: Flit Header for Format 3 or Format 4 without Retry

在这里插入图片描述

  有同学问,Flit Header 中的 Protocol Identifier 已经可以指示当前 Flit 是否为 NOP Flit 了,为何还需要 lp_nop_flit 这个信号,不是多此一举吗?——问得好。实际上,Protocol Identifier 中指示当前为 NOP Flit,lp_nop_flit 来指示 Adapter 当前 Flit 是否可以绕过 Tx Retry Buffer。并非所有 NOP Flit 都可以绕过 Tx Retry Buffer,比如当前 Flit 为 NOP Flit,但其 DLLP Bytes 位置存放了 Flit_Maker,该 Flit 就不能绕过 Retry Buffer。Flit_Marker 跟 TLP 状态有关,需要保存在 Retry Buffer 中。

3. NOP DLLP 及 NOP2 DLLP

  在 PCIe Flit Mode 中,NOP 及 NOP2 DLLP 稍有不同,NOP DLLP 多用于 PCIe PHY 链路训练的 Idle 状态。UCIe 不涉 PCIe PHY 训练,也就没有细分 NOP DLLP 及 NOP2 DLLP。

  在发送端,当没有流控或其他有实际作用的 DLLP 要发送时,Flit 的 DLLP Bytes 位置填充 NOP DLLP。UCIe 没有 NOP2 DLLP,UCIe 的 NOP DLLP 在数据格式上与 PCIe 的 NOP2 DLLP 相同。一般 NOP DLLP 在 Adapter 插入中。协议层可以通过 lp_dllp 传递 NOP DLLP 到 Adapter 吗?一来没禁止,二来没必要。即便传过来了,Adapter 也不会用。最终发出去的 DLLP 是由 Adapter 来负责协调的,正常的 DLLP 都不一定会用,何况你 NOP DLLP。

  在接收端,即便 Adapter 发现当前 Flit 为 NOP Flit,其仍要从 DLLP Bytes 位置来提取并解析 DLLP。若接收端 Adapter 接收到的 DLLP Bytes 位置全部为 0,表示该 DLLP 为 NOP DLLP(对应 PCIe 的 NOP2 DLLP)。Adapter 不得将接收到的 NOP DLLP 上传到协议层,协议层也没必要接收 NOP DLLP 或做相关逻辑。

4. FDI / RDI 上的 NOP 请求

  上层通过 FDI 或 RDI 接口的 lp_state_req 信号来请求下层进行状态转换。在没有任何请求时,lp_state_req 的请求为 NOP。pl_state_sts 用以显示下层的状态,当下层为 RESET 状态时,下层检测到 lp_state_req 由 NOP->ACTIVE/LinkReset/Disable 的跳变才能跳到相应状态,而非仅仅看 lp_state_req 所请求的状态。

  物理链路开始训练之前(RDI 状态机处于 Reset), Adapter 可以通过 lp_state_req=NOP->Active 的转换来触发物理层进行链路训练。

5. Sideband 中的 NOP

  UCIe Sideband 上也可以传递 NOP。目前 NOP Message 只有 {NOP.Crd} 一种,用来传递 E2E Credit。{NOP.Crd} 目的地必须为 Adapter,该 Message 的格式如图 2 所示。

▼表 2: NOP Message Encodings

在这里插入图片描述

6. 参考 UCIe Spec r1.0, Chapter 4, 7UCIe PHY LSM 介绍

— END —

🔥 精选往期 UCIe 协议系列文章,请查看【 Chiplet 专栏】🔥

⬆️ 返回顶部 ⬆️



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3